Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit f782d7269f42bcaaabe8e4b59249664be5336f21


Parents : b8b56d5
Author : Mark Qvist <bc7291552be7a58f361522990465165c>
Signature : T66BB85Valid, signed by author
Date : 2026-05-31T19:39:34+02:00

Added desktop mode detection for independent UI scales

Changes

2 files changed, 31 insertions(+), 0 deletions(-)


Diff

diff --git a/sbapp/main.py b/sbapp/main.py
index 4913b0ed..5c31cc20 100644
--- a/sbapp/main.py
+++ b/sbapp/main.py
@@ -75,6 +75,17 @@ def get_display_res():
RNS.trace_exception(e)
return None, None
+def detect_android_desktop_mode():
+ if not RNS.vendor.platformutils.is_android(): return False
+ else:
+ try:
+ from android import mActivity
+ if mActivity.inDesktopMode: return True
+ else: return False
+ except Exception as e:
+ RNS.log(f"Could not get desktop mode information: {e}", RNS.LOG_WARNING)
+ return False
+
def apply_ui_scale():
global app_ui_scaling_path
global app_ui_wcfg_path
@@ -95,7 +106,9 @@ def apply_ui_scale():
try:
if RNS.vendor.platformutils.is_android():
import plyer
+ desktop_mode = detect_android_desktop_mode()
ui_scale_path = os.path.join(plyer.storagepath.get_application_dir(), "io.unsigned.sideband", "files", "app_storage", "ui_scale")
+ if desktop_mode: ui_scale_path += ".desktop_mode"
else:
if config_path == None:
import sbapp.plyer as plyer

diff --git a/sbapp/patches/PythonActivity.java b/sbapp/patches/PythonActivity.java
index 41b9460f..db9b40de 100644
--- a/sbapp/patches/PythonActivity.java
+++ b/sbapp/patches/PythonActivity.java
@@ -39,12 +39,16 @@ import org.kivy.android.launcher.Project;
import org.renpy.android.ResourceManager;
+import android.content.res.Configuration;
+import java.lang.reflect.Field;
+import java.lang.Class;
public class PythonActivity extends SDLActivity {
private static final String TAG = "PythonActivity";
public static PythonActivity mActivity = null;
public boolean activityPaused = false;
+ public boolean inDesktopMode = false;
private ResourceManager resourceManager = null;
private Bundle mMetaData = null;
@@ -72,6 +76,20 @@ public class PythonActivity extends SDLActivity {
this.mActivity = this;
this.showLoadingScreen(this.getLoadingScreen());
+ try {
+ Configuration config = getResources().getConfiguration();
+ Class configClass = config.getClass();
+ if(configClass.getField("SEM_DESKTOP_MODE_ENABLED").getInt(configClass) == configClass.getField("semDesktopModeEnabled").getInt(config)) {
+ this.inDesktopMode = true;
+ }
+ } catch(NoSuchFieldException e) {
+ // Pass
+ } catch(IllegalAccessException e) {
+ // Pass
+ } catch(IllegalArgumentException e) {
+ // pass
+ }
+
new UnpackFilesTask().execute(getAppRoot());
}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────